专利摘要:
predictive motion vector candidate management is a method to manage pmv candidate. the method comprises selecting a group of pmv candidates as a subgroup of the previously coded motion vectors. the method further comprises assigning a code value to each pmv candidate in the pmv candidate group. code values vary in length and are assigned to pmv candidates in expected usage order, so the pmv candidate with the highest expected usage has one of the smallest code values.
公开号:BR112012019560B1
申请号:R112012019560-3
申请日:2010-12-23
公开日:2021-08-24
发明作者:Thomas Rusert;Kenneth Andersson;Rickard Sjoberg;Jacob Strom;Per Wennersten
申请人:Telefonaktiebolaget Lm Ericsson;
IPC主号:
专利说明:

technical field
[001] The present invention relates to a method for managing PMV candidates, a video encoding apparatus, a video decoding apparatus and a computer readable medium. Background of the invention
[002] Recent video coding standards are based on the principle of hybrid coding, which comprises the temporal prediction of video frames by motion compensation and the coding of residual signals from the frames. For efficient temporal prediction by motion compensation, block-based motion models are used to describe the motion of pixel blocks between frames. Each motion compensation block is assigned a single motion vector (in the case of monopredictive temporal prediction, such as in P-frames) or two motion vectors (in the case of bi-predictive temporal prediction, such as in B-frames). These motion vectors are encoded in the video bitstream along with the frame's residual signals.
[003] At high compression rates (or, equivalently, low bit rates of a video), motion vector encoding takes up a large part of the total amount of bits, especially in recent video encoding standards such as H .264/AVC, in which small motion compensation blocks are used. Normally, lossless motion vector predictive coding is used, that is, the coding of a MV motion vector consists of first building a PMV motion vector predictor for the vector to be encoded and then transmitting the difference DMV, where DMV = MV - PMV, between the motion vector and the motion vector predictor.
[004] In H.264/AVC, a PMV is calculated as the median of the motion vectors of three spatially neighboring blocks. Other approaches also consider temporally neighbor blocks (ie, co-located in neighboring frames) for motion vector prediction. Instead of using a fixed rule to build the PMV, approaches have recently emerged that explicitly flag a PMV that will be used from a set of PMV candidates, the PMV CANDS list. Although additional bits are needed to signal a candidate from the set, in general, this way, bits are saved for motion vector encoding as DMV encoding is more efficient. That is, identifying and signaling a DMV takes fewer bits than MV-independent signaling.
[005] The efficiency of motion vector coding schemes that use PMV candidate signaling depends on the adequacy of the candidates available in the PMV CANDS list. In other words, building the candidate list has a big impact on coding performance. Existing approaches typically use motion vectors of spatially surrounding blocks or temporally neighboring blocks (blocks co-located in neighboring frames). Such construction of the PMV CANDS list, that is, considering only the few adjacent blocks as a source of motion vector predictors, may be less than ideal.
[006] The number of candidates in the PMV CANDS list, that is, the "length" of the PMV CANDS list, also has great impact on coding efficiency. The reason is that the greater the number of candidates, the greater the number of bits needed to signal one of them, which in turn causes additional overhead and therefore leads to lower compression efficiency. Existing approaches assume a fixed number of candidates in the PMV CANDS list (eg, spatially neighboring motion vectors) valid for encoding a frame or video sequence, and the number of candidates can only be reduced if some of the candidates are identical.
[007] Motion vector encoding requires a significant proportion of the bit rate available in video encoding. Increasing the number of PMV candidates decreases the size of the difference value (DMV) that must be signaled, but requires more signaling to identify the specific PMV. Therefore, to improve the efficiency of video encoding, an improved method and apparatus for managing PMV candidates is needed.
[008] The document "An efficient motion vector coding scheme based on minimum bitrate prediction", by Sung Deuk Kim and Jong Beom Ra, published by IEEE Trans. Image Proc., Volume 8, Issue 8, August 1999, pages 1117 to 1120, describes a motion vector encoding technique based on prediction with minimal bit rates. A predicted motion vector is chosen from the three neighboring causal motion vectors to produce a minimum bit rate in encoding the motion vector difference. Then, the prediction error, or motion vector difference, and the modal information to determine the predicted motion vector in a decoder are encoded and transmitted in order.
[009] The document "Competition-Based Scheme for Motion Vector Selection and Coding", by Joel Jung and Guillaume Laroche, documented by the Video Coding Experts Group (VCEG) of the ITU - Telecommunications Standardization Sector, and with document number VCEGAC06, Klagenfurt, Austria , July 2006, describes a method to lower the cost of motion information in video encoding. Two modifications made to the motion vector predictor selection are revealed: improved prediction of motion vectors that need to be transmitted; and adding an "Ignore" mode in order to increase the number of macroblocks that do not require sending any movement information.
[0010] The document US 2009/0129464, on behalf of Jung et al., refers to adaptive encoding and decoding. It describes a method for transmitting part of an image in which, in an encoding phase that analyzes the encoding context, a parameter of a set of prediction functions that can be used for encoding is adapted. A first predicted descriptor is formed using a selected prediction function. A residue between the first predicted descriptor and the current descriptor is determined and transmitted. summary
[0011] We propose a method to manage PMV candidates. The method comprises selecting a set of PMV candidates as a subset of the previously coded motion vectors. The method further comprises assigning a code value to each PMV candidate in the pool of PMV candidates. Code values vary in length and are assigned to PMV candidates in expected usage order, so the PMV candidate with the highest expected usage has one of the smallest code values.
[0012] The above method allows more frequently used PMV candidates to be signaled using fewer bits. Thus, it is possible to increase the coding efficiency.
[0013] The code values assigned to each PMV candidate may comprise any code system that produces codewords of varying length. For example, code values can be assigned according to at least one of: arithmetic coding; Variable Length Encoding; and Context-Based Adaptive Arithmetic Coding.
[0014] Any unnecessary PMV candidates may be removed from the PMV candidate pool. This ensures that the length of the list is not unnecessarily long, which would compromise coding efficiency. A PMV candidate is deemed unnecessary if at least one of the following conditions is met: the PMV candidate is a duplicate of another PMV candidate in the pool; the PMV candidate is said to be within a threshold distance from an existing PMV candidate; and the PMV candidate would never be used, since at least one alternative PMV candidate allows encoding motion vectors using fewer bits.
[0015] In addition, a set of PMV candidates may be deemed unnecessary if its removal from the PMV candidate list results in the need for at most N more bits to encode any single motion vector, where N is one predetermined limit. Removing a set of PMV candidates from the PMV candidate list allows the remaining PMV candidates to be signaled using smaller codes and therefore fewer bits. However, removing a set of PMV candidates from the PMV candidate list causes some motion vectors to have a larger difference vector, which requires more bits for encoding. Above the average of several motion vectors, the savings in signaling which PMV candidate to use may exceed the maximum N bits needed to signal some motion vectors.
[0016] Before assigning code values, the PMV candidates in the set of PMV candidates are sorted according to the expected usage of the PMVs. The code values are then assigned to the PMV candidates in the ordered list. Code values are assigned in the order of the sorted entries, so that the length of the assigned code values does not decrease as you progress through the list of PMV candidates. PMV candidates are identified by a scan pattern applied to the set of previously coded blocks. The scan pattern identifies specific blocks. The scan pattern is arranged in the order of expected usage. The sweep pattern is arranged in ascending order of distance of each identified block from the current block.
[0017] Each PMV candidate corresponds to a motion vector used to encode a previous block, said previous block having a certain distance from a current block. Code values are assigned to PMV candidates in order according to the distance of their respective previous blocks from a current block.
[0018] Distance is measured as a Euclidean distance or as a Chebyshev distance. The Euclidean distance is found by calculating the square root of the sum of squares of the difference in x and y positions between the current and the previous block. Sorting according to the Euclidean distance can be done by sorting according to the squared Euclidean distance; the square root function does not affect ordering. The Manhattan distance is given by the sum of absolute values: the difference in x coordinates of the current block and the previous block; and the difference in y coordinates of the current block and the previous block. The Chebyshev distance is defined as the greater of two values, the first being the absolute value of the difference in x coordinates of the current block and the previous block and the second being the absolute value of the difference in y coordinates of the current block and the previous block .
[0019] The PMV candidates can first be ordered according to the Chebyshev distance and then the PMV candidates with the same Chebyshev distance can be ordered according to the Euclidean distance. Thus, the efficient ordering of PMV candidates is allowed.
[0020] The method can be adopted for encoding or decoding videos, where the current block is the block being encoded or decoded, respectively.
[0021] The present invention also relates to a video encoding apparatus comprising a processor programmed to select a set of PMV candidates as a subset of the previously encoded motion vectors. The processor is further programmed to assign a code value to each PMV candidate in the PMV candidate pool, where the code values vary in length and are assigned to the PMV candidates in the order of expected usage, so that the candidate the PMV with the highest expected usage has one of the lowest code values.
[0022] The present invention also relates to a video decoding apparatus comprising a processor programmed to select a set of PMV candidates as a subset of the previously encoded motion vectors. The processor is further programmed to assign a code value to each PMV candidate in the PMV candidate pool, where the code values vary in length and are assigned to the PMV candidates in the order of expected usage, so that the candidate the PMV with the highest expected usage has one of the lowest code values.
[0023] The present invention also relates to a computer-readable medium that carries instructions that, when executed by computer logic, cause it to perform any of the methods disclosed in this document.
[0024] This document also discloses several methods for building PMV candidate lists: PMV CANDS. Candidates in the PMV CANDS list are sorted, and the use of one of the candidates in the PMV CANDS list is signaled from encoder to decoder. The flag is arranged so that the first candidate in the list is assigned the smallest codeword among the candidates, and that subsequent candidates in the list are assigned codewords of non-descending length (notoriously any other equivalent mapping of candidates in codewords can also be applied). Then, using a combination of several methods, the PMV CANDS list set is constructed so that the most useful candidates for prediction are placed at the beginning of the list. In addition, using these methods, candidates in the list are selected so that they allow efficient coding of motion vectors, and if only a few of these candidates are available, the size of the list is reduced so that the words. code to signal the use of a candidate has its length reduced. Finally, we present methods to efficiently signal the use of PMV candidates.
[0025] Furthermore, the present invention provides a method for encoding a motion vector, which comprises: identifying a set of PMV candidates; determine that a specific PMV candidate has coordinate values such that, for a motion vector with x or y coordinates smaller than the coordinate values of the specific PMV candidate, an alternative PMV candidate in the set of PMV candidates can encode the motion vector using fewer bits; determine that a motion vector will be encoded using the specific PMV candidate; calculate a difference vector as the difference between the motion vector and the specific PMV; and encoding the difference vector without encoding a sign bit.
[0026] Furthermore, the present invention provides a method for decoding a motion vector, which comprises: receiving the identity of a PMV candidate; receive a difference value without a sign bit; determine several possible motion vectors based on the possible sign values of the difference value; determine the lowest bit cost solution to encode the possible motion vectors identified using the available PMV candidates; and select the motion vector that uses the identified PMV candidate. When receiving a DMV that contains a difference value without a sign bit, two possible motion vectors are found. When receiving a DMV that contains two difference values without a sign bit, four possible motion vectors are found.
[0027] Applying this method, some situations are identified in which the sign of a difference component (xdiff or ydiff) can only assume one value. This is possible because the system selects the PMV candidate that minimizes the bit cost. If the sign of a difference component is unknown, there are two possible motion vectors. In some situations, the system identifies that one of the motion vectors would be encoded at minimum bit cost using the indicated PMV, while the other would be encoded at minimum bit cost using a different PMV. Thus, the system identifies the difference sign as the signal that corresponds to the motion vector that would be encoded with a minimum bit cost using the indicated PMV. Therefore, in the case of certain PMV candidates, it is not necessary to transmit a signal bit in at least one of the difference components, thus lowering the bit cost and improving coding efficiency. Brief description of the drawings
[0028] From now on, we will describe an improved method and apparatus for managing PMV candidates by way of example only and with reference to the attached drawings, among which: Figure 1 illustrates a video coding and transmission system; the figures 2a and 2b illustrate the use of a PMV candidate list during encoding and decoding, respectively; Figure 3 illustrates an example of two PMV candidates; Figure 4 illustrates the bit cost for encoding motion vectors using the motion vectors of Figure 3; and Figure 5 illustrates a method disclosed in this document. Detailed Description
[0029] Figure 1 illustrates a video encoding system in which a video signal coming from a source 110 is ultimately distributed to a device 160. The video signal coming from the source 110 goes through an encoder 120, which contains a processor 125. Encoder 120 applies an encoding process to the video signal to generate an encoded video stream. The encoded video stream is sent to a transmitter 130 where it can receive further processing, such as bundling, before transmission. A receiver 140 receives the transmitted encoded video stream and passes it to a decoder 150. The decoder 150 contains a processor 155 which is used in decoding the encoded video stream. Decoder 150 transmits the decoded video stream to device 160.
[0030] The methods disclosed in this document occur in the encoder, during encoding, and in the decoder, during decoding. Thus, the signaling bits are generated in the encoder. During decoding, the decoder parses the bits and mimics the encoder in order to achieve encoder/decoder synchronization. As the encoder and decoder follow the same rules for generating and modifying the PMV candidate set, the respective PMV candidate lists stored in the encoder and decoder remain synchronized. Even so, under certain circumstances, explicit signaling of lists of candidates for PMV is carried out.
[0031] The described methods assume the coding of a motion vector (MV) 210 using predictive coding techniques, in which a predicted motion vector (PMV) 220 is used to predict a MV 210 and the prediction error or difference ( DMV) 230 is given by DMV = MV - PMV. Encoder 120 signals DMV 230 to decoder 150. In addition, an "index" of code 250 is sent to select a specific PMV candidate, in this case 242, from a list of PMV candidates, PMV CANDS 240, as shown in figure 2a. Index 250 can be sent at once along with each transmitted MV 210 motion vector, ie per sub-block (eg 8 x 8 pixel block). Similarly, the index can be sent by sets of motion vectors, for example, by macroblock (16 x 16 blocks).
[0032] The list of PMV candidates, PMV_CANDS 240, has N elements PMV_1 241, PMV_2 242, PMV_3 243 etc. The PMV_CANDS 240 list is identically available in encoder 120 and decoder 150. Using the transmitted index, decoder 150 determines the PMV 220 used in the encoder, as shown in figure 2b, and thus reconstructs MV = DMV + PMV .
[0033] There are two main operations adopted for the formulation of the PMV 240 candidate set: initialization and update.
[0034] Initialization means the elaboration of a predefined condition from the list. A PMV_CANDS list can be started, for example, as an empty list (with no entries) or as a list with one or more predefined entries, such as vector zero (0,0).
[0035] Updating means adding one or more motion vectors to an existing PMV_CANDS list. A PMV_CANDS list can be updated to include previously encoded MV motion vectors. When encoding a current block in the encoder, the PMV_CANDS list can contain, in addition to any predefined initialization vectors, motion vectors associated with previously encoded blocks in the video. By restricting the possible candidates in the PMV_CANDS list to predefined vectors and previously encoded vectors, the decoder is able to deduce the PMV_CANDS list as well as the encoder.
[0036] Alternatively, it is possible to add one or more motion vector candidates that were not previously coded to the PMV_CANDS list in the encoder and then explicitly signal them to the decoder for inclusion in the PMV_CANDS list, causing it to be updated from the same way in the encoder and in the decoder.
[0037] The PMV_CANDS list used to encode a MV motion vector associated with a current motion compensation block can be dynamically generated specifically for the current motion compensation block, for example, without taking into account the PMV_CANDS lists used for encode MVs associated with previously encoded motion compensation blocks. In this case, before processing a block, a PMV_CANDS list is started and then updated with a certain number of previously coded or predefined vectors. Alternatively, a PMV_CANDS list can be started once (eg before video encoding/decoding starts, before a frame is processed or after a certain number of macroblocks are encoded into a frame) and then used to encode more than one motion vector; the advantage of this is that the potentially complex process of deducing the PMV_CANDS list only needs to be processed once to encode a set of motion vectors. When used to encode more than one motion vector, the PMV_CANDS list can however be updated after encoding one of the motion vectors. For example, the PMV_CANDS list can first be used to encode a motion vector MV associated with a first motion compensation block; then be updated using the MV vector (eg MV is added to the list); and then be used to encode a second motion compensation block. By subsequently updating the PMV_CANDS list with encoded motion vectors, it is updated according to a sliding window approach.
[0038] While encoding a video, one or several PMV_CANDS lists can be maintained according to the sliding window approach, for example, one for each frame type, one for each macroblock type, or one for each reference frame. When encoding the two motion vectors associated with a bi-predicted motion compensation block, it is possible to use one or two different PMV_CANDS lists.
[0039] Before processing a motion vector associated with a current motion compensation block, the PMV_CANDS list used to encode the current motion vector is updated with motion vectors associated with adjacent blocks.
[0040] The PMV_CANDS list can be updated so that motion vectors associated with nearby motion compensation blocks are inserted at the beginning of the PMV_CANDS list (signaled with fewer bits), while motion vectors associated with motion compensation blocks farther movements are inserted at the end of the PMV_CANDS list. Possible measures to determine the distance of a motion compensation block from the current block include: the Euclidean distance (dx2 + dy2, where dx and dy are distances in the x and y directions, respectively); the distance from Manhattan (the sum of absolute values, |dx| + |dy|); or the Chebyshev distance (the maximum of absolute values, max(|dx|, |dy|), also known as maximum measure, chess distance, box distance, L» measure (L-infinite measure), or L norm ». To do this, you can scan out around the current block to get motion vectors to update the PMV_CANDS list. The scan ends when at least one of the following conditions is satisfied: - all blocks in the current frame are scanned, - all blocks of a predefined number of subsequent frames (eg the last frame) are scanned, - as soon as a certain distance is reached, - as soon as a predefined number of unique PMV candidates is found, - all blocks of a predetermined scan pattern are swept.
[0041] Note that ordering the list according to distance is avoided in an outward scan, because by inserting single vectors at the end of the PMV_CANDS list, it is kept ordered with the spatially closest vector first.
[0042] The motion vectors that will be added to the PMV_CANDS list can comprise spatial or temporal neighbors of the current block, or combinations of spatial and/or temporal neighbors, for example, an H.264/AVC style median predictor deduced based on spatially neighboring blocks.
[0043] As an alternative to considering a predefined neighborhood to scan for motion vector candidates, it is possible to signal from the encoder to the decoder (and therefore dynamically decide in the encoder), for each motion vector or for a set of motion vectors (eg a macroblock), whether the associated motion vectors will be added to the PMV_CANDS list.
[0044] Among a set of possible mechanisms to determine motion vector candidates, a mechanism or a combination of mechanisms can be dynamically decided in the encoder and the decision then signaled to the decoder.
[0045] Limiting or/or reducing the number of candidates in the PMV_CANDS list can be of great help in order to reduce the overhead for signaling which PMV is used in motion vector prediction, since smaller lists require smaller codewords . Furthermore, restricting the addition of certain candidates may pave the way for the addition of other, more useful candidates.
[0046] One measure to reduce the number of candidates is to avoid duplicate occurrences of the same motion vector in a given PMV_CANDS list. For that, when updating the list, the candidates already present in it are compared to the new vector to be added and, if a duplicate is found, the duplicated vector is removed or the new vector ignored. It is preferable to ignore the new vector; otherwise, a subsequent duplicate of a distant block may cause a candidate high in the order of the list to be placed at the end of the list.
[0047] The act of removing or ignoring new motion vectors can also be for similar but not equal motion vectors, such as pairs of motion vectors with a similarity measure lower than a predefined threshold, where the similarity measures can be the Euclidean distance (x0 – x1)2+ (y0 – y1)2 or the absolute distance |x0 – x1|+ |y0 – y1|, where (x0,y0) and (x1,y1) are the pair of vectors of movement taken into account. In place of a direct distance measure, another approach is to look at the number of bits needed to encode the distance between motion vectors using a given encoding scheme.
[0048] In addition, the number of candidates in the PMV_CANDS list can be limited to a predefined or dynamically obtained number. It is possible that, once the number has been reached, by adding an additional candidate, the candidate at the end of the PMV_CANDS list will be removed. This is feasible because the candidate list is sorted so that the PMV candidate at the end of the list is the least likely to be used.
[0049] Alternatively, the removal of candidates from a PMV_CANDS list can be explicitly signaled from the encoder to the decoder (and therefore dynamically decided by the encoder), for example, by sending a code for the removal of a movement vector candidate from a list along with a motion vector identifier, for example, the index.
[0050] From now on, we will explain how to determine the order of motion vector candidates in the candidate list. It is assumed that candidates in the PMV_CANDS list are sorted and the use of one of the candidates in the PMV_CANDS list for prediction is flagged so that the first candidate in the list is assigned the smallest codeword among the candidates and that subsequent candidates in the list codewords of non-descending length are assigned. The following methods can be adopted when updating a PMV_CANDS list in order to order the candidates in a way that is beneficial to overall coding efficiency.
[0051] Motion vectors that correspond to blocks closer to the current block (using some measure of distance) will have a position closer to the start of the list than motion vectors belonging to blocks further away from the current block.
[0052] The motion vector associated with the last coded block is placed at the beginning of the list (smallest codeword). Alternatively, a combined candidate, such as an H.264/AVC median predictor (or the like) for the current block, is placed at the top of the list. Combining this approach with dynamic adaptation of the size of the PMV_CANDS list allows for guaranteed prediction performance, for example, of the H.264/AVC median predictor, as it is possible for the size of the PMV_CANDS list to be set to one, making with that no bits need to be sent to signal an index.
[0053] Candidates can be ordered according to the frequency of occurrence of the candidate (or other candidates, for example, with Euclidean or absolute distance below a predefined threshold) in previously coded blocks, so that the vectors that describe the movement typical for a frame or video sequence to be assigned short codewords. Alternatively, if a duplicate of a new candidate is already in the list, it can be removed and the new vector added to the top of the list; or, alternatively, the existing motion vector can be shifted one or more steps ahead in the list.
[0054] It may also be useful to include weight in relation to the size of the motion compensation partition so that motion vectors with more weight are placed further apart at the beginning of a PMV_CANDS list than those with less weight. For example, larger partitions may be given more confidence than smaller partitions in the sense that, depending on the encoded sequence, their motion vectors are more likely to describe more typical motion in the sequence in question. Therefore, motion vectors associated with larger partitions can be given more weight. Also, ignored motion vectors can be trusted differently, for example given less weight, compared to non-ignored motion vectors.
[0055] Alternatively, the reordering of a PMV_CANDS list can be explicitly signaled from the encoder to the decoder (and therefore dynamically decided in the encoder), for example, by sending a code for the reordering of a candidate motion vector of a list along with an identifier of the motion vector that will be moved, for example an index, and a sign indicating where to move the candidate in question.
[0056] When a motion vector candidate is added or obtained from a PMV_CANDS list (in this case, in order to use it for prediction), it can be modified according to a predefined method. Since the modification at the time of addition (during encoding) and at the time of acquisition (during decoding) are equivalent, we can assume, without loss of generality, that the vectors are modified at the time of acquisition. Such modifications at the time of acquisition include: • Scaling of a motion vector candidate according to the frame distance of the frame of reference to which the motion vector candidate is applied for prediction. For example, suppose a motion vector candidate MV(T-1) = (X, Y) in PMV_CANDS was applied for motion compensation prediction from a reference frame representing video at time T-1 , later than the current frame taken to represent the video at time T. If this candidate is obtained from PMV_CANDS for use in predicting a motion vector that points to a reference frame representing the video at time T-2 ( two frames ahead of the current frame), the magnitude of the motion vector can be scaled by a factor of 2, ie (2*X, 2*Y). Also, if a motion vector candidate (X, Y) in the PMV_CANDS list indicates that the video frame in T-2 should be used as a reference to the frame in T-1, the motion vector can be scaled to (X /2, T/2). In either case, we might end up duplicating a candidate motion vector, in which case it might be removed. The scaling of motion vector candidates is reasonable under the linear motion assumption.• Similarly, by obtaining a motion vector predictor MV(T-1) = (X, Y) in a frame B representing moment T , apply this motion vector to the motion compensation prediction of a left reference frame (moment T-1) and then use the predictor for the prediction of an applied vector for the motion compensation prediction of a frame of reference to the right (momentum T+1), the sign of the motion vector predictor is inverted, ie (-X, -Y).
[0057] The size of the predictor candidate list may vary. Limiting or/or reducing the number of candidates in the PMV_CANDS list can be of great help in order to decrease the overhead for signaling which PMV is used in motion vector prediction, since smaller lists require smaller codewords. On the other hand, depending on the characteristics of the video sequence, it can be beneficial to have a larger number of motion vector prediction candidates, for example, in order to save bits for DMV encoding in case of jerky motion. The following methods can be adopted to adapt the size of the PMV_CANDS list according to the characteristics of the video sequence.
[0058] The list size can be defined in the slice/frame/image header or in a sequence width header (such as a parameter setting), ie, signaled from encoder to decoder and therefore dynamically adapted in the encoder.
[0059] Candidates that were not used for prediction during encoding a certain number of previously encoded blocks (according to a predefined limit) are removed from the list, thus decreasing its size.
[0060] The size of the list is adapted according to the similarity of candidates on the list. For example, when updating a list with a MV motion vector, the number of MV-like candidates (according to a distance measure such as Euclidean or absolute distance, with a predefined threshold) is counted. A high count indicates a high number of similar candidates, and since it may be unnecessary to have similar candidates, at least one can be removed and the size of the list decreased. A low number of similar candidates, on the other hand, may indicate that it may be beneficial to have an additional candidate; therefore, you can increase the size of the list.
[0061] As mentioned above, candidates in PMV_CANDS are sorted and the use of one of the candidates in PMV_CANDS is flagged so that the first candidate in the list is assigned the smallest codeword among the candidates and that subsequent candidates in the list are codewords of non-descending length are assigned. Said codewords can be defined, for example, according to Variable Length Coding tables. The VLC table used can depend on the maximum number of candidates in PMV_CANDS (the size of the list), for example, dynamically adapted according to the method above. Table 1 below presents some examples of VLC codes for different maximum list sizes. The left column shows the maximum size of the list, also indicated by C. In the right column, VLC codes are given along with indexes to refer to candidates in the PMV_CANDS list.Table 1: Example VLC codes for different maximum sizes of the list


[0062] In the case of bipredicted motion compensation blocks, two motion vectors are coded, and therefore two PMV candidates may be needed. In this case, the index numbers for the two PMV candidates can be encoded together in order to further decrease the number of bits needed for index encoding. Table 2 illustrates an example for joint index coding, taking into account that both motion vectors use the same PMV_CANDS list and that it is likely that both motion vectors use the same predictor in the PMV_CANDS list. Here, idx0 and idx1 indicate the indices for the first and second predictors, respectively. VLC0(idx,C) indicates a VLC code for an index "idx" according to table 1 taking into account a maximum size of list C.Table 2: VLC code for encoding the index of two candidates associated with a block bipredicted, C: maximum PMV CANDS size.

[0063] Unnecessary PMV candidates are removed from the PMV candidate list. A mechanism to remove PMV candidates is needed, as some candidates in the list may never be used, as choosing a candidate with a smaller codeword and coding the distance will produce a smaller or even bit stream. length for all possible motion vectors. In this case, they can be removed, thus shortening the list and average bit length of each index. Alternatively, it may be possible to enter more candidates instead. That way, the average bit length is kept the same, but the newly inserted candidate has a chance to be useful.
[0064] For example, suppose we have the following candidates: Value Index Code

[0065] Furthermore, suppose we encode a DMV difference (xdiff, ydiff), where xdiff and ydiff are encoded using table 3 below. If we want to encode a motion vector such as MV = (0.2), we can then encode it using candidate 3, which is PMV = (0.2), plus a difference DMV = (0.0) :PMV + DMV = MV(0.2) + (0.0) = (0.2).
[0066] The index costs four bits (the code length for index 3 is four bits), and each of the zeros in the difference costs one bit, so the total number of bits needed to encode MV = (0.2 ) is 4+1+1 = 6 bits.
[0067] However, we can also code the vector using index 0, PMV = (-1.2) plus a difference DMV = (1,0):(-1, 2) + (1.0) = (0, two).
[0068] The index costs one bit (code length for index 1 is one bit), the term xdiff = 1 in difference costs three bits (see table 3 below) and the term ydiff = 0 costs one bit. So we have 1 + 3 + 1 = 5 bits in all, which is better than using index 3, which requires 6 bits. It is easy to see, given that the vector difference is encoded using table 3 below, that it will never be beneficial to use index 3, as using index 0 will always be a bit cheaper. Therefore, we can eliminate the candidate vector (0.2) and then obtain:

[0069] Index 4, vector (3.4) now has a smaller code; now it is three bits instead of four. So we gain from elimination if vector (3,4) is used and we never lose anything. In the example above, we have removed the PMV candidate with index number 3, but those skilled in the art will realize that this is just an example. For example, in some cases it may also be beneficial to remove candidates 1 or 2.
[0070] Since the same analysis takes place in the encoder and in the decoder, the same vector is removed from the list in the encoder and in the decoder. So, after removal, both encoder and decoder will use the same candidate list.
[0071] Sometimes it may not be possible to guarantee winning by removing only one candidate, but it may be possible if two or more candidates are eliminated at the same time. Another possibility is that changing the order of candidates or even adding a new candidate to the list allows us to remove candidates now considered unnecessary and therefore bring benefits regardless of the final motion vector that will be coded. to send the Differential Code

[0072] The number of bits needed can be further reduced by not sending the sign bit, which is possible since, in some circumstances, the differential sign bit is unnecessary. Suppose, for example, that we have the following list of PMV candidates:

[0073] Suppose we want to code a vector using a PMV candidate with index number 3, PMV = (11,3). Since the PMV candidate with index number 4 is to the right of it (with PMV coordinates = (12,3)), it is advantageous to code it with candidate 4 if the coordinate is 12 or greater. For example, the vector MV = (15, 2) can be encoded using candidate 3 as (11,3) + (4, -1) costing four bits for the index, seven for +4, and three for -1 (see table 3), totaling 14 bits. But it can also be encoded using candidate 4 as follows (12,3) + (3,-1) which costs four bits for the index, five for +3 and three for -1, totaling 12 bits. Since candidate 4 will always be closer to any point in the midplane on the right, it will be advantageous to choose candidate 4 for this. Similarly, it is better to choose candidate 3 if we are in the mid-plane on the left (as noted from the point between (11.3) and (12.3)).
[0074] This means that it is unnecessary to specify the sign bit of the differential in the x component, as it will always be negative for (11.3) and positive for (12.3). The sign bit is the last bit in table 3, saved by a 0, which does not have a sign bit. This means that if candidate 3 or 4 is selected, it will have one bit less to encode.
[0075] The decoder, of course, will do the same analysis and will avoid reading the signal bit if the above situation occurs.
[0076] Even if the candidates are not exactly close to each other, or if they are not exactly the same cost, it is possible to avoid sending the sign bit to at least one of the candidates. For example, suppose we want to code a vector using a PMV candidate with index number 5, PMV = (1,2). If the x coordinate for the vector to encode is less than or equal to zero, it is always advantageous to use candidate O, since it has a lower cost. This means that the sign bit for the x coordinate does not need to be sent to candidate 5. However, it is not possible to remove the x component sign bit for candidate 0. Since its index value is so cheap to code, it is advantageous to choose it even if the vector to encode is to the right of candidate 5.
[0077] If index 0 has the same cost as index 4, both candidates would be equally good to encode a vector with a coordinate x 0. However, we could choose to always use the smallest index in these cases and thus avoid sending the signal bit when index 4 is selected. If the vectors are in the same row (as above) or indeed in the same column, it is possible to deduce a general expression for when it is never useful to send the sign bit, as follows.
[0078] With reference to figure 3, suppose we have two candidates A = (Ax, Ay) and B = (Bx, By) on the same line (so By = Ay) and that the distance between them is D, de so that Bx = Ax + D. Next, let's assume that D is positive, but those skilled in the art will find that this also works if we swap places A and B. Suppose that it is never more expensive to pass the index to candidate A than to candidate B, that is, cost(A_index) < cost(B_index), where cost(A_index) is the cost to pass the index associated with candidate A. Also, cost_x(k) indicates the cost to send the differential k in the x direction. For example, cost_x(-3) is equal to 5 according to table 3.
[0079] Now, if cost(A_index) - cost(B_index) + cost_x(D-1) - 3 < 0, we don't need to send the sign bit to candidate B. For example, if A = (11,2) , B = (13.2), A_index is 1 and B_index is 0001, so D = 2 and cost(A_index) - cost(B_index) + cost_x(D-1) - 3 equals 1 - 4 + 3 - 3 = -2, which is less than 0, so we don't need to send the sign bit to B. This example is illustrated in Figure 4, where the x and y axes indicate the x and y components of motion vectors. Each block in Figure 4 represents a motion vector; the bit cost to encode the respective motion vector using the PMV candidate A is illustrated on the left of the block and the bit cost to encode the respective motion vector using the PMV candidate B is illustrated on the right of the block. In Figure 4, we can see that for VMs with an x component of 12 or less, the most efficient PMV to use is A, whereas for VMs with an x component of 13 or more, the most efficient PMV to use is B.
[0080] In an implementation of the proposed solution, we use a maximum of four candidates in the list. However, in another embodiment, we use seven candidates and, in principle, there is no upper limit. If we allow a higher maximum, the list grows and the chances of finding a suitable vector increase. On the other hand, the number of bits needed to specify the vector candidate also increases. Furthermore, we have the problem that many vectors can be represented using multiple candidates, which is unnecessary. This redundant representation grows as more vectors are added.
[0081] One way to avoid this redundant representation is to restrict the number of possible vectors to code along with each candidate vector. For example, it is possible to constrain a certain candidate so that it can only encode motion vectors that are exactly the same as it or that differ by one measure in one direction. This can be done by changing the way the differential is encoded.
[0082] Typically, the differential is encoded using table 3, with separate encoding for x and y. We could use the following short table instead:

[0083] This strict differential encoding can be employed for candidates above a certain index. For example, all candidates with an index of 3 or greater could be coded this way.
[0084] This brings at least two advantages: 1) The differential coding becomes quite short, which is good, as the cost to signal an index of 3 or greater is quite high; e2) The candidate will spend no bits to cover motion vectors that would otherwise be better encoded using any of the other candidate vectors. The redundancy problem described above is therefore improved.
[0085] Figure 5 illustrates a method according to the present invention. At 510, a set of PMV candidates is selected from the set of previously used motion vectors. Previously used motion vectors are those used when encoding a previous block in the frame. At 520, duplicate PMV candidates are removed from the pool. At 530, the PMV candidates in the pool are sorted according to expected usage. Expected usage can be calculated based on the newly encoded video. Expected usage can be determined by the proximity of the current block to the block for which the PMV candidate was used as a motion vector using some measure of distance. At 540, code values are assigned to PMV candidates, the code values varying in length. The lowest code value is assigned to the PMV candidate with the highest expected usage. Subsequent code values have a non-descending length.
[0086] The methods and apparatus described in this document improve the efficiency of coding schemes for motion vector prediction using motion vector predictor signaling.
[0087] Those skilled in the art will realize that the exact order and content of the actions performed in the method described in this document can be changed according to the requirements of a specific set of execution parameters. Therefore, the order in which actions are described and/or claimed should not be interpreted as a strict limitation on the order in which actions will be performed.
[0088] Furthermore, although we have given examples in the context of specific coding standards, they are not intended to limit the coding standards to which the disclosed method and apparatus can be applied. For example, while we have given specific examples in the context of H.264/AVC, the principles disclosed in this document also apply to the MPEG2 system, another coding standard, and indeed to any coding system that uses predicted motion vectors.
权利要求:
Claims (12)
[0001]
1. Method for managing Predicted Motion Vector candidates (240) characterized by comprising: selecting (510) a set of Predicted Motion Vector candidates (240) as a subset of the previously encoded motion vectors (210); a Predicted Motion Vector according to the frame distance of the reference frame to which the previously encoded motion vector was applied; assign (540) a code value to each Predicted Motion Vector candidate (240) in the candidate set to Predicted Motion Vector (240), where code values vary in length and are assigned to Predicted Motion Vector (240) candidates in the order of expected usage such that Predicted Motion Vector (240) candidate having the largest expected usage has one of the smallest code values.
[0002]
2. Method according to claim 1, characterized in that the code values assigned (540) to each candidate Predicted Motion Vector (240) are assigned according to at least one of: arithmetic coding; Variable Length Encoding; and Context-Based Adaptive Arithmetic Coding.
[0003]
The method of claim 1 or 2, further comprising removing (520) unnecessary Predicted Motion Vector (240) candidates from the set of Predicted Motion Vector (240) candidates.
[0004]
Method, according to claim 1 or 2, characterized in that it further comprises classifying (530) the Predicted Motion Vector candidates (240) in the set of Predicted Motion Vector candidates (240) according to the expected use.
[0005]
5. Method according to claim 1 or 2, characterized in that the expected use of a candidate Predicted Motion Vector (240) is obtained from the frequency of use of the Predicted Motion Vector.
[0006]
6. Method according to claim 1 or 2, characterized in that each Predicted Motion Vector candidate (240) corresponds to a motion vector used to encode a previous block, said previous block being at a distance in relation to the current block, and in which the expected usage of a candidate Predicted Motion Vector (240) is obtained from the distances of its respective previous blocks in relation to a current block.
[0007]
7. Method according to claim 6, characterized in that the distance is measured as a Euclidean distance.
[0008]
8. Method according to claim 6, characterized in that the distance is measured as a Chebyshev distance.
[0009]
9. Method according to claim 8, characterized in that the code values are assigned (540) to Predicted Motion Vector candidates (240) having a common Chebyshev distance according to their Euclidean distance.
[0010]
Method according to claim 6, characterized in that it is for video encoding or video decoding, wherein the current block is the block being encoded or decoded, respectively.
[0011]
11. Video encoding apparatus (120) characterized by comprising a processor (125) arranged to: select (510) a set of Predicted Motion Vector candidates (240) as a subset of the previously encoded motion vectors (210); scaling a candidate Predicted Motion Vector according to the frame distance of a reference frame to which the previously encoded motion vector was applied; assign (540) a code value to each Predicted Motion Vector candidate (240) in the Predicted Motion Vector candidate set (240), where the code values vary in length and are assigned to the Motion Vector candidates Predicted (240) in the order of expected usage so that the Predicted Motion Vector candidate (240) having the highest expected usage has one of the lowest code values.
[0012]
12. Video decoding apparatus (150) characterized by comprising a processor (155) arranged to: select (510) a set of Predicted Motion Vector candidates (240) as a subset of the previously encoded motion vectors (210); scaling a Predicted Motion Vector candidate according to the frame distance of a reference frame to which the previously encoded motion vector was applied; assign (540) a code value to each Predicted Motion Vector candidate (240) in the set of Predicted Motion Vector (240) candidates, where code values vary in length and are assigned to Predicted Motion Vector (240) candidates in the order of expected usage so that the Predicted Motion Vector candidate (240) having the highest expected usage has one of the lowest code values.
类似技术:
公开号 | 公开日 | 专利标题
BR112012019560B1|2021-08-24|METHOD FOR MANAGING CANDIDATES FOR PREDICTED MOVEMENT VECTOR, AND, VIDEO ENCODING AND DECODING APPARATUS
US9854266B2|2017-12-26|Picture encoding device, picture encoding method, picture encoding program, picture decoding device, picture decoding method, and picture decoding program
RU2684753C1|2019-04-12|Device and method of coding image, device and method for decoding image and data media
WO2016034058A1|2016-03-10|Method of intra picture block copy for screen content and video coding
BR112019025566A2|2020-06-23|MOTION VECTOR PREDICTION
JP6293788B2|2018-03-14|Device and method for scalable coding of video information based on high efficiency video coding
JP6322136B2|2018-05-09|Motion information encoding method and apparatus, decoding method and apparatus
KR101797805B1|2017-11-14|Decoding method, decoding device, and computer readable storage medium
BR122015013887B1|2021-08-10|METHOD TO DECODE AN IMAGE
KR101538710B1|2015-09-15|Temporal block merge mode
BR112020024202A2|2021-02-17|method of processing video data, video processing apparatus and non-transitory computer-readable storage and recording media
BR112012025275B1|2021-08-03|METHOD FOR PERFORMING MULTIPLE HYPOTHESIS PREDICTION LOCATED DURING VIDEO ENCODING OF AN ENCODING UNIT AND ASSOCIATED APPARATUS
BR112021012638A2|2021-09-14|DECODING DEVICE, ENCODING DEVICE AND RELATED METHODS
BR112020023571A2|2021-02-09|video encoding method and apparatus using bidirectional cu weighting
BR112020015246A2|2021-01-26|accessible hardware restricted motion vector refinement
BR112021009606A2|2021-08-10|motion vector refinement on the decoder side
TW202019185A|2020-05-16|Asymmetric weighted bi-predictive merges
US11082702B2|2021-08-03|Inter prediction mode-based image processing method and device therefor
Liu et al.2019|Adaptive motion vector resolution for affine-inter mode coding
CN110858904A|2020-03-03|Video encoding and decoding based on multiple motion models
JP2020184802A|2020-11-12|Candidate list sharing method and device using the same
CN113302916A|2021-08-24|Interpolation for bi-prediction with CU level weights
WO2020075053A1|2020-04-16|Generation and usage of combined affine merge candidate
WO2020058954A1|2020-03-26|Representation of affine model
TW201933872A|2019-08-16|Method and apparatus of affine inter prediction for video coding system
同族专利:
公开号 | 公开日
BR112012019560A2|2020-08-18|
US20110194608A1|2011-08-11|
WO2011095260A1|2011-08-11|
CN102860006B|2016-11-23|
US20170064299A1|2017-03-02|
US20110194609A1|2011-08-11|
EP2532159A1|2012-12-12|
EP2532160A1|2012-12-12|
CN102860006A|2013-01-02|
WO2011095259A1|2011-08-11|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题

US7609765B2|2004-12-02|2009-10-27|Intel Corporation|Fast multi-frame motion estimation with adaptive search strategies|
US20060153299A1|2005-01-07|2006-07-13|Kabushiki Kaisha Toshiba|Coded video sequence conversion apparatus, method and program product for coded video sequence conversion|
US8913660B2|2005-04-14|2014-12-16|Fastvdo, Llc|Device and method for fast block-matching motion estimation in video encoders|
FR2896118A1|2006-01-12|2007-07-13|France Telecom|ADAPTIVE CODING AND DECODING|
KR101383540B1|2007-01-03|2014-04-09|삼성전자주식회사|Method of estimating motion vector using multiple motion vector predictors, apparatus, encoder, decoder and decoding method|
US8098962B2|2007-11-20|2012-01-17|Kabushiki Kaisha Toshiba|Signal processing method, apparatus, and program|
EP2266318B1|2008-03-19|2020-04-22|Nokia Technologies Oy|Combined motion vector and reference index prediction for video coding|
WO2010146314A1|2009-06-19|2010-12-23|France Telecom|Encoding motion vectors using competition between predictors|KR100939917B1|2008-03-07|2010-02-03|에스케이 텔레콤주식회사|Encoding system using motion estimation and encoding method using motion estimation|
JP5368631B2|2010-04-08|2013-12-18|株式会社東芝|Image encoding method, apparatus, and program|
WO2011146451A1|2010-05-20|2011-11-24|Thomson Licensing|Methods and apparatus for adaptive motion vector candidate ordering for video encoding and decoding|
KR101842852B1|2010-09-24|2018-03-27|선 페이턴트 트러스트|Image encoding method, image decoding method, image encoding apparatus, and image decoding apparatus|
JP2014501091A|2010-12-17|2014-01-16|エレクトロニクスアンドテレコミュニケーションズリサーチインスチチュート|Inter prediction method and apparatus|
GB2486901B|2010-12-29|2014-05-07|Canon Kk|Video encoding and decoding with improved error resilience|
US20130301734A1|2011-01-12|2013-11-14|Canon Kabushiki Kaisha|Video encoding and decoding with low complexity|
GB2487200A|2011-01-12|2012-07-18|Canon Kk|Video encoding and decoding with improved error resilience|
US9532066B2|2011-01-21|2016-12-27|Qualcomm Incorporated|Motion vector prediction|
US9319716B2|2011-01-27|2016-04-19|Qualcomm Incorporated|Performing motion vector prediction for video coding|
MX2013010231A|2011-04-12|2013-10-25|Panasonic Corp|Motion-video encoding method, motion-video encoding apparatus, motion-video decoding method, motion-video decoding apparatus, and motion-video encoding/decoding apparatus.|
PL2717573T3|2011-05-24|2018-09-28|Velos Media International Limited|Image encoding method, image encoding apparatus, image decoding method, image decoding apparatus, and image encoding/decoding apparatus|
US9485518B2|2011-05-27|2016-11-01|Sun Patent Trust|Decoding method and apparatus with candidate motion vectors|
MX2013012132A|2011-05-27|2013-10-30|Panasonic Corp|Image encoding method, image encoding device, image decoding method, image decoding device, and image encoding/decoding device.|
SG194746A1|2011-05-31|2013-12-30|Kaba Gmbh|Image encoding method, image encoding device, image decoding method, image decoding device, and image encoding/decoding device|
ES2861773T3|2011-05-31|2021-10-06|Jvc Kenwood Corp|Motion picture decoding device, motion picture decoding procedure and motion picture decoding program|
KR101889582B1|2011-05-31|2018-08-20|선 페이턴트 트러스트|Video encoding method, video encoding device, video decoding method, video decoding device, and video encoding/decoding device|
GB2491589B|2011-06-06|2015-12-16|Canon Kk|Method and device for encoding a sequence of images and method and device for decoding a sequence of image|
EP2724538A4|2011-06-24|2016-04-27|Mediatek Inc|Method and apparatus for removing redundancy in motion vector predictors|
PL2728878T3|2011-06-30|2020-06-15|Sun Patent Trust|Image decoding method, image encoding method, image decoding device, image encoding device, and image encoding/decoding device|
MX347793B|2011-08-03|2017-05-12|Panasonic Ip Corp America|Video encoding method, video encoding apparatus, video decoding method, video decoding apparatus, and video encoding/decoding apparatus.|
US9300975B2|2011-09-11|2016-03-29|Texas Instruments Incorporated|Concurrent access shared buffer in a video encoder|
EP2716047A4|2011-10-19|2015-03-18|Mediatek Inc|Method and apparatus for derivation of motion vector predictor candidate set|
MX2014003991A|2011-10-19|2014-05-07|Panasonic Corp|Image encoding method, image encoding device, image decoding method, and image decoding device.|
AU2011379313A1|2011-10-21|2014-05-22|Nokia Technologies Oy|Method for video coding and an apparatus|
US20130114717A1|2011-11-07|2013-05-09|Qualcomm Incorporated|Generating additional merge candidates|
TWI577181B|2011-12-28|2017-04-01|Jvc Kenwood Corp|Dynamic video coding device, dynamic image coding method and dynamic image coding program|
US20130188715A1|2012-01-09|2013-07-25|Qualcomm Incorporated|Device and methods for merge list reordering in video coding|
DK3767952T3|2012-01-19|2021-12-20|Electronics & Telecommunications Res Inst|IMAGE CODING / DECODING DEVICE|
US9426463B2|2012-02-08|2016-08-23|Qualcomm Incorporated|Restriction of prediction units in B slices to uni-directional inter prediction|
US9451277B2|2012-02-08|2016-09-20|Qualcomm Incorporated|Restriction of prediction units in B slices to uni-directional inter prediction|
US9635356B2|2012-08-07|2017-04-25|Qualcomm Incorporated|Multi-hypothesis motion compensation for scalable video coding and 3D video coding|
CN102883163B|2012-10-08|2014-05-28|华为技术有限公司|Method and device for building motion vector lists for prediction of motion vectors|
CN105765974B|2013-10-14|2019-07-02|微软技术许可有限责任公司|Feature for the intra block of video and image coding and decoding duplication prediction mode|
WO2015054813A1|2013-10-14|2015-04-23|Microsoft Technology Licensing, Llc|Encoder-side options for intra block copy prediction mode for video and image coding|
US9432685B2|2013-12-06|2016-08-30|Qualcomm Incorporated|Scalable implementation for parallel motion estimation regions|
EP3090553A4|2014-01-03|2017-12-20|Microsoft Technology Licensing, LLC|Block vector prediction in video and image coding/decoding|
US10390034B2|2014-01-03|2019-08-20|Microsoft Technology Licensing, Llc|Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area|
US10368091B2|2014-03-04|2019-07-30|Microsoft Technology Licensing, Llc|Block flipping and skip mode in intra block copy prediction|
US20150264361A1|2014-03-13|2015-09-17|Huawei Technologies Co., Ltd.|Method for screen content coding|
WO2015192353A1|2014-06-19|2015-12-23|Microsoft Technology Licensing, Llc|Unified intra block copy and inter prediction modes|
CN105874795B|2014-09-30|2019-11-29|微软技术许可有限责任公司|When wavefront parallel processing is activated to the rule of intra-picture prediction mode|
US10397600B1|2016-01-29|2019-08-27|Google Llc|Dynamic reference motion vector coding mode|
WO2017131908A1|2016-01-29|2017-08-03|Google Inc.|Dynamic reference motion vector coding mode|
US10462457B2|2016-01-29|2019-10-29|Google Llc|Dynamic reference motion vector coding mode|
GB2547754B|2016-01-29|2020-08-26|Google Llc|Dynamic reference motion vector coding mode|
US10721489B2|2016-09-06|2020-07-21|Qualcomm Incorporated|Geometry-based priority for the construction of candidate lists|
EP3343925A1|2017-01-03|2018-07-04|Thomson Licensing|Method and apparatus for encoding and decoding motion information|
US10291928B2|2017-01-10|2019-05-14|Blackberry Limited|Methods and devices for inter-prediction using motion vectors for video coding|
EP3410717A1|2017-05-31|2018-12-05|Thomson Licensing|Methods and apparatus for candidate list pruning|
US10602180B2|2017-06-13|2020-03-24|Qualcomm Incorporated|Motion vector prediction|
US10986349B2|2017-12-29|2021-04-20|Microsoft Technology Licensing, Llc|Constraints on locations of reference blocks for intra block copy prediction|
US10812810B2|2018-02-06|2020-10-20|Tencent America LLC|Method and apparatus for video coding in merge mode|
WO2019190338A1|2018-03-26|2019-10-03|Huawei Technologies Co., Ltd.|A video image encoder, a video image decoder and corresponding methods for motion information coding|
WO2019223746A1|2018-05-23|2019-11-28|Mediatek Inc.|Method and apparatus of video coding using bi-directional cu weight|
WO2019234600A1|2018-06-05|2019-12-12|Beijing Bytedance Network Technology Co., Ltd.|Interaction between pairwise average merging candidates and intra-block copy |
TWI739120B|2018-06-21|2021-09-11|大陸商北京字節跳動網絡技術有限公司|Unified constrains for the merge affine mode and the non-merge affine mode|
GB2589223A|2018-06-21|2021-05-26|Beijing Bytedance Network Tech Co Ltd|Component-dependent sub-block dividing|
EP3794824A1|2018-06-29|2021-03-24|Beijing Bytedance Network Technology Co. Ltd.|Conditions for updating luts|
JP2021530936A|2018-06-29|2021-11-11|北京字節跳動網絡技術有限公司Beijing Bytedance Network Technology Co., Ltd.|Look-up table updates: FIFO, restricted FIFO|
TWI723444B|2018-06-29|2021-04-01|大陸商北京字節跳動網絡技術有限公司|Concept of using one or multiple look up tables to store motion information of previously coded in order and use them to code following blocks|
WO2020003266A1|2018-06-29|2020-01-02|Beijing Bytedance Network Technology Co., Ltd.|Resetting of look up table per slice/tile/lcu row|
CN110662064A|2018-06-29|2020-01-07|北京字节跳动网络技术有限公司|Checking order of motion candidates in LUT|
CN114125450A|2018-06-29|2022-03-01|北京字节跳动网络技术有限公司|Method, apparatus and computer readable medium for processing video data|
GB2588528A|2018-06-29|2021-04-28|Beijing Bytedance Network Tech Co Ltd|Selection of coded motion information for LUT updating|
KR20210024502A|2018-06-29|2021-03-05|베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드|Partial/full pruning when adding HMVP candidates to merge/AMVP|
WO2020003282A1|2018-06-29|2020-01-02|Beijing Bytedance Network Technology Co., Ltd.|Managing motion vector predictors for video coding|
TWI735902B|2018-07-02|2021-08-11|大陸商北京字節跳動網絡技術有限公司|Lookup table with intra frame prediction and intra frame predication from non adjacent blocks|
US11006143B2|2018-07-11|2021-05-11|Apple Inc.|Motion vector candidate pruning systems and methods|
US20200059658A1|2018-08-16|2020-02-20|Qualcomm Incorporated|History-based candidate list with classification|
CN110855993A|2018-08-21|2020-02-28|华为技术有限公司|Method and device for predicting motion information of image block|
WO2020055287A1|2018-09-10|2020-03-19|Huawei Technologies Co., Ltd.|Video decoder and methods|
US10958932B2|2018-09-12|2021-03-23|Qualcomm Incorporated|Inter-prediction coding of video data using generated motion vector predictor list including non-adjacent blocks|
TW202025760A|2018-09-12|2020-07-01|大陸商北京字節跳動網絡技術有限公司|How many hmvp candidates to be checked|
TWI729497B|2018-09-17|2021-06-01|聯發科技股份有限公司|Methods and apparatuses of combining multiple predictors for block prediction in video coding systems|
TW202025731A|2018-09-19|2020-07-01|大陸商北京字節跳動網絡技術有限公司|Multiple prediction blocks for one intra-coded block|
WO2020065518A1|2018-09-24|2020-04-02|Beijing Bytedance Network Technology Co., Ltd.|Bi-prediction with weights in video coding and decoding|
EP3861741A1|2018-10-02|2021-08-11|InterDigital VC Holdings, Inc.|Method and apparatus for video encoding and decoding using list of predictor candidates|
WO2020088691A1|2018-11-02|2020-05-07|Beijing Bytedance Network Technology Co., Ltd.|Harmonization between geometry partition prediction mode and other tools|
CN112219400A|2018-11-06|2021-01-12|北京字节跳动网络技术有限公司|Location dependent storage of motion information|
WO2020096426A1|2018-11-08|2020-05-14|주식회사 엑스리스|Method for encoding/decoding image signal, and device for same|
CA3118882A1|2018-11-08|2020-05-14|Guangdong Oppo Mobile Telecommunications Corp., Ltd.|Image signal encoding/decoding method, and device for same|
CN113383554A|2019-01-13|2021-09-10|北京字节跳动网络技术有限公司|Interaction between LUTs and shared Merge lists|
US20200236366A1|2019-01-17|2020-07-23|Tencent America LLC|Method and apparatus for video coding|
WO2020164544A1|2019-02-13|2020-08-20|Beijing Bytedance Network Technology Co., Ltd.|Updating of history based motion vector prediction tables|
WO2020224639A1|2019-05-09|2020-11-12|Beijing Bytedance Network Technology Co., Ltd.|Improvement on hmvp table|
CN113906760A|2019-06-05|2022-01-07|北京字节跳动网络技术有限公司|Motion information derivation for inter-prediction|
US20210392363A1|2020-06-11|2021-12-16|Tencent America LLC|Spatial displacement vector prediction for intra picture block and string copying|
法律状态:
2020-08-25| B15K| Others concerning applications: alteration of classification|Free format text: A CLASSIFICACAO ANTERIOR ERA: H04N 7/26 Ipc: H04N 19/105 (2014.01), H04N 19/137 (2014.01), H04N |
2020-09-01| B06U| Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]|
2021-06-08| B09A| Decision: intention to grant [chapter 9.1 patent gazette]|
2021-08-24| B16A| Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]|Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 23/12/2010, OBSERVADAS AS CONDICOES LEGAIS. PATENTE CONCEDIDA CONFORME ADI 5.529/DF, QUE DETERMINA A ALTERACAO DO PRAZO DE CONCESSAO. |
优先权:
申请号 | 申请日 | 专利标题
US30164910P| true| 2010-02-05|2010-02-05|
US61/301,649|2010-02-05|
PCT/EP2010/070680|WO2011095260A1|2010-02-05|2010-12-23|Managing predicted motion vector candidates|
[返回顶部]